package service;

import java.util.Collection;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

import model.Item;
import model.Produto;
import model.Venda;

public class ItemService {
	
	protected EntityManager entityManager;
	
	public ItemService(EntityManager entityManager) {
		this.entityManager = entityManager;
	}
	
	public Item criaItem(Collection<Produto> produtos) {
		Item item = new Item();
		item.setProdutos(produtos);
		item.setQuantidadeItens(produtos.size());
		item.calculaValorParcial();
		
		insereItem(item);
		return item;
	}
	
	public Item alteraVenda(Long itemId, Venda venda) {
		Item item = entityManager.getReference(Item.class, itemId);
		if (item != null) {
			item.setVenda(venda);
		}
		return item;
	}
	
	public Item findItem(Long id) {
		Item Item = entityManager.getReference(Item.class, id);
		return Item;
	}
	
	public List<Item> listaItems() {
		TypedQuery<Item> query = entityManager.createQuery(
				"SELECT e FROM Item e", Item.class);
		return query.getResultList();
	}
	
	public void deletaItems() {
		TypedQuery<Item> query = entityManager.createQuery(
				"DELETE FROM Item", Item.class);
		query.executeUpdate();
	}
	
	public void insereItem(Item emp) {
		entityManager.persist(emp);
	}
	
	public void removeItem(Long id) {
		Item item = findItem(id);
		if (item != null) {
			entityManager.remove(item);
		}
	}

}
